package com.qianxun.api;

import java.util.Map;

/**
 * api 请求过程监听器
 * @author: huwei
 * @date: 2019/9/18 15:42
 * @version: 1.0.0
 */
public interface ApiRequestMonitor {
    /**
     * api请求之前回调
     * @param apiClass api接口的类对象
     * @param methodName api接口调用方法名
     * @param url 请求url列表
     * @param requestParameterMap 请求参数列表
     */
    default void before(Class<?> apiClass, String methodName, String[] url, Map<String, String> requestParameterMap){
    }

    /**
     * api 请求完成之后回调
     * @param apiClass api接口的类对象
     * @param methodName 方法名
     * @param url 请求url列表
     * @param requestParameterMap 请求参数列表
     * @param result 请求结果
     */
    default void after(Class<?> apiClass, String methodName, String[] url, Map<String, String> requestParameterMap, Object result){
    }

    /**
     * api 请求发生错误时回调
     * @param apiClass api接口的类对象
     * @param methodName api接口调用方法名
     * @param url 请求url列表
     * @param requestParameterMap 请求参数列表
     * @param cause error对象
     */
    default void error(Class<?> apiClass, String methodName, String[] url, Map<String, String> requestParameterMap, Throwable cause){
    }
}
